home *** CD-ROM | disk | FTP | other *** search
/ Aminet 5 / Aminet 5 - March 1995.iso / Aminet / misc / amag / AM9403_2.lha / blitz-basic / listing.bb2 next >
Text File  |  1994-01-26  |  4KB  |  190 lines

  1. ;
  2. ; Ein kleines Notizbuch
  3. ;
  4.  
  5. NEWTYPE .fiend
  6.   t$[8]        ;jede Variable hat acht Einträge
  7. End NEWTYPE
  8.  
  9. Dim List u.fiend(5000)      ;Maximal 5000 Einträge
  10.  
  11. Dim *ptr.fiend(10) ;Zeiger fürs mehrspaltige Drucken
  12.  
  13. MaxLen p$=160:MaxLen f$=64  ;für Datei-Requester
  14.  
  15. FindScreen 0                ;Fenster auf der Workbench
  16. Gosub setupwindow
  17. Gosub newfiend
  18. col=2:wid=42:hi=9:Gosub printset
  19.  
  20. Repeat
  21.   ev.l=WaitEvent
  22.   If ev=$40 Then gh=GadgetHit Else gh=-1
  23.   Select gh
  24.     Case 0:Gosub newfiend
  25.     Case 1:Gosub deletefiend
  26.     Case 2:Gosub lastfiend
  27.     Case 3:Gosub nextfiend
  28.     Case 4:test=0:Gosub doprintout
  29.     Case 5:Gosub doload
  30.     Case 6:Gosub dosave
  31.     Case 20:Gosub search
  32.     Case 21:Gosub nxsearch
  33.     Case 30:col=Val(StringText$(0,30)):Gosub printset
  34.     Case 31:wid=Val(StringText$(0,31)):Gosub printset
  35.     Case 32:hi=Val(StringText$(0,32)):Gosub printset
  36.     Case 33:test=1:Gosub doprintout
  37.   End Select
  38.   If gh>9 AND gh<18 Then i=gh-10:Gosub updatefield
  39. Until ev=$200
  40. End
  41.  
  42. .printset
  43.   ; Erneuere die String-Gadgets fürs Drucken
  44.   SetString 0,30,Str$(col):Redraw 0,30
  45.   SetString 0,31,Str$(wid):Redraw 0,31
  46.   SetString 0,32,Str$(hi):Redraw 0,32
  47.   Return
  48.  
  49. .search
  50.   ;Hole die Zeichenkette zum Suchen
  51.   srch$=UCase$(StringText$(0,20))
  52.   ;Starte die Suche am Beginn der Liste
  53.   ResetList u()
  54. .nxsearch
  55.   ;Solange ein Eintrag existiert
  56.   While NextItem(u())
  57.     For i=0 To 7
  58.       If Instr(UCase$(u()\t[i]),srch$)
  59.         Pop For
  60.         Goto drawfiend
  61.       EndIf
  62.     Next
  63.   Wend
  64.   Return
  65.  
  66. .nextfiend
  67.   If NOT NextItem(u()) Then FirstItem u()  ;Zum Anfang
  68.   Gosub drawfiend:Return
  69.  
  70. .lastfiend
  71.   If NOT PrevItem(u()) Then LastItem u()
  72.   Gosub drawfiend:Return
  73.  
  74. .deletefiend
  75.   KillItem u()                   ;Eintrag löschen
  76.   ; Wenn's der letzte war und kein weiterer existiert,
  77.   ; neuen einrichten
  78.   If NOT NextItem(u())
  79.     If NOT FirstItem(u()) Then Gosub newfiend
  80.   EndIf
  81.   Gosub drawfiend:Return
  82.  
  83. .newfiend
  84.   If AddItem(u())
  85.     u()\t[0]="**NEW**":Gosub drawfiend
  86.   EndIf
  87.   Return
  88.  
  89. .updatefield
  90.   u()\t[i]=StringText$(0,10+i)
  91.   If i<7 Then ActivateString 0,10+i+1
  92.   Return
  93.  
  94. .drawfiend
  95.   For i=0 To 7:SetString 0,10+i,u()\t[i]
  96.     Redraw 0,10+i
  97.   Next
  98.   ResetString 0,10:ActivateString 0,10:Return
  99.  
  100. .doload
  101.   f$=FileRequest$("LOAD FILE",p$,f$)  ;Daten laden
  102.   If ReadFile(0,f$)
  103.     ClearList u():FileInput 0:i=0
  104.     While NOT Eof(0)
  105.       a$=Edit$(128)
  106.       If i=0 AND a$<>"" Then AddItem u()
  107.       If a$<>""
  108.         u()\t[i]=a$:If i<7 Then i+1 Else i=0
  109.       Else
  110.         i=0
  111.       EndIf
  112.     Wend
  113.     CloseFile 0
  114.   EndIf
  115.   Gosub drawfiend:Return
  116.  
  117. .dosave
  118.   f$=FileRequest$("SAVE FILE",p$,f$)  ;Daten speichern
  119.   If WriteFile(0,f$)
  120.     FileOutput 0
  121.     ResetList u()
  122.     While NextItem(u())
  123.       For i=0 To 7:NPrint u()\t[i]:Next
  124.     Wend
  125.     CloseFile 0
  126.   EndIf
  127.   Return
  128.  
  129. .setupwindow
  130.   Restore gads
  131.   For i=0 To 6
  132.     Read a$
  133.     a$=Centre$(a$,6)
  134.     TextGadget 0,8+i*58,16,0,i,a$
  135.   Next
  136.   For i=0 To 7
  137.     StringGadget 0,6,32+i*11,0,10+i,128,400
  138.   Next
  139.   StringGadget 0,140,130,0,20,32,200
  140.   TextGadget 0,360,130,0,21,"NEXT"
  141.   For i=0 To 2
  142.     StringGadget 0,100,154+i*14,0,30+i,64,100
  143.   Next
  144.   TextGadget 0,240,170,0,33,"TEST PRINT  XXXXXXX"
  145.   Window 0,50,0,420,200,$100e,"Mein Notizbuch",1,2,0
  146.   WLocate 16,121:Print "SEARCH STRING:"
  147.   GadgetBorder 10,128,400,16
  148.   WLocate 16,145:Print "COLUMNS:"
  149.   WLocate 16,159:Print "  WIDTH:"
  150.   WLocate 16,173:Print " HEIGHT:"
  151.   GadgetBorder 10,152,400,44
  152.   Return
  153.  
  154. gads:Data$ "ADD",DELETE,<=,=>,"PRINT",LOAD,SAVE
  155.  
  156. .doprintout
  157.   If WriteFile(0,"prt:")   ;Ausgabe auf den Drucker
  158.     FileOutput 0
  159.     If test=0              ;Wenn nicht der Testmodus
  160.       ResetList u()        ;aktiv ist, dann alles
  161.       While NextItem(u())  ;drucken
  162.         *ptr(1)=u()
  163.         For i=2 To col
  164.           If NextItem(u()) Then *ptr(i)=u()
  165.         Next
  166.         For j=0 To hi-1
  167.           If j<8
  168.             For i=1 To col
  169.               Print LSet$(*ptr(i)\t[j],wid)
  170.             Next
  171.           EndIf
  172.           NPrint ""
  173.         Next
  174.       Wend
  175.     Else
  176.       For k=1 To 2
  177.         For j=0 To hi-1
  178.           If j<8
  179.             For i=1 To col
  180.               Print String$("X",wid-2),".."
  181.             Next
  182.           EndIf
  183.           NPrint ""
  184.         Next
  185.       Next
  186.     EndIf
  187.     CloseFile 0
  188.   EndIf
  189.   Return
  190.